package monpkg.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Date;

import monpkg.entities.Address;
import monpkg.entities.Student;
/**
 * @author Yannick Bouchot
 * @author Jonathan Romero
 */

public interface IStudentImpl extends Remote{
	/**
	 * Cette fonction appel a distance le constructeur newStudent()
	 */
    Student newStudent() throws RemoteException;
    /**
     * Cette fonction appel a distance le constructeur newStudent(String, String, String, String)
     */
    Student newStudent(String firstName, String name, String mail, String password) throws RemoteException;
    /**
	 * Cette fonction appel a distance la methode getAddress(Address) permettant de
	 * recuperer l'adresse de l'etudiant
	 */
    public Address getAddress()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setAddress(Address) permettant de
	 * definir l'adresse de l'etudiant
	 */
	public void setAddress(Address address)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getId() permettant de
	 * recuperer l'id de l'etudiant
	 */
	public long getId()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setId(long) permettant de
	 * definir l'id de l'etudiant
	 */
	public void setId(long id)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getFirstName() permettant de
	 * recuperer le firstName de l'etudiant
	 */
	public String getFirstName()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setFirstName(String)
	 * permettant de définir le firstName de l'etudiant
	 */
	public void setFirstName(String firstName)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getName() permettant de
	 * recuperer le name de l'etudiant
	 */
	public String getName()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setName(String) permettant de
	 * définir le name de l'etudiant
	 */
	public void setName(String name)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getPassword() permettant de
	 * recuperer le password de l'etudiant
	 */
	public String getPassword()throws RemoteException;
	/***
	 * Cette fonction appel a distance la methode setpassword(String) permettant
	 * de définir le password de l'etudiant
	 */
	public void setPassword(String password)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getMail() permettant de
	 * recuperer l'adresse mail de l'etudiant
	 */
	public String getMail()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setMail(String) permettant de
	 * définir l'adresse mail de l'etudiant
	 */
	public void setMail(String mail)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getWebSite() permettant de
	 * recuperer lesite web de l'etudiant
	 */
	public String getWebSite()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setWebSite(String) permettant de
	 * définir le site web de l'etudiant
	 */
	public void setWebSite(String webSite)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getCompanyName() permettant de
	 * recuperer le nom de la compagnie qui a embauché l'etudiant
	 */
	public String getCompanyName()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setCompagnyName(String) permettant de
	 * définir le nom de la compagnie qui a embauché l'etudiant
	 */
	public void setCompanyName(String companyName)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getCompanySiteWeb() permettant de
	 * recuperer le site web de la compagnie qui a embauché l'etudiant
	 */
	public String getCompanySiteWeb()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setCompanySiteWeb(String) permettant de
	 * définir le site web de la compagnie qui a embauché l'etudiant
	 */
	public void setCompanySiteWeb(String companySiteWeb)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode getBirthDay() permettant de
	 * recuperer la date d'anniversaire de l'etudiant
	 */
	public Date getBirthDay()throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode setBirthDay(Date) permettant de
	 * définir la date d'anniversaire de l'etudiant
	 */
	public void setBirthDay(Date birthDay)throws RemoteException;
	/**
	 * Cette fonction appel a distance la methode studentCounter()
	 */
    int studentCounter() throws RemoteException;
}
